local stockKey = ARGV[1]
local userId = ARGV[2]
local recardUserSet = ARGV[3]
-- 查库存
local stock = redis.call('get', stockKey)

if tonumber(stock) == nil or tonumber(stock) <= 0 then
    -- 库存不足
    return 1
end
-- 查用户
local result = redis.call('sismember', recardUserSet, userId)
if result == 1 then
    -- 用户已经购买过了
    return 2
end
-- 减库存
redis.call('incrby', stockKey, -1)
-- 记录用户
redis.call('sadd', recardUserSet, userId)
-- 购买成功
return 0